package concurrencia;

import java.util.ArrayList;

import sistemaDefensivo.MisilDefensor;
import sistemaEnemigo.MisilEnemigo;
import escenario.IdPosicion;

public class MonitorEspacio {

	protected SemaforoBinario lock;
	protected ArrayList <MisilEnemigo> misilesEnemigos;
	protected ArrayList <MisilDefensor> misilesDefensores;
	protected ArrayList <IdPosicion> posEnemigos;
	protected ArrayList <IdPosicion> posDefensores;

    /*Constructor*/
    public MonitorEspacio()
    {
        lock = new SemaforoBinario(1);
        misilesEnemigos = new ArrayList <MisilEnemigo>();
        misilesDefensores = new ArrayList <MisilDefensor>();
        posEnemigos = new ArrayList <IdPosicion>();
        posDefensores = new ArrayList <IdPosicion>();
    }
    
    public void addMisilesEnemigos(MisilEnemigo misilEnemigo){
    	lock.cerrar();
    	misilesEnemigos.add(misilEnemigo);
    	lock.abrir();
    }
    
    public MisilEnemigo getMisilesEnemigos(int pos){
    	return misilesEnemigos.get(pos);
    }
    
    public void setMisilesEnemigos(int pos, MisilEnemigo misilEnemigo){
    	lock.cerrar();
    	misilesEnemigos.set(pos, misilEnemigo);
    	lock.abrir();
    }
    
    public int getSizeMisilesEnemigos(){
    	return misilesEnemigos.size();
    }
    
    public void addMisilesDefensores(MisilDefensor misilDefensor){
    	lock.cerrar();
    	misilesDefensores.add(misilDefensor);
    	lock.abrir();
    }
    
    public MisilDefensor getMisilesDefensores(int pos){
    	return misilesDefensores.get(pos);
    }
    
    public void setMisilesDefensores(int pos, MisilDefensor misilDefensor){
    	lock.cerrar();
    	misilesDefensores.set(pos, misilDefensor);
    	lock.abrir();
    }
    
    public int getSizeMisilesDefensores(){
    	return misilesDefensores.size();
    }
    
    public void addPosEnemigos(IdPosicion posEnemigo){
    	lock.cerrar();
    	posEnemigos.add(posEnemigo);
    	lock.abrir();
    }    
    
    public IdPosicion getPosEnemigo(int pos){
    	return posEnemigos.get(pos);
    }
    
    public void setPosEnemigos(int pos, IdPosicion idPosicion){
    	lock.cerrar();
    	posEnemigos.set(pos, idPosicion);
    	lock.abrir();
    }
    
    public int getSizePosEnemigos(){
    	return posEnemigos.size();
    }
    
    public void addPosDefensores(IdPosicion posDefensor){
    	lock.cerrar();
    	posDefensores.add(posDefensor);
    	lock.abrir();
    }
    
    public IdPosicion getPosDefensores(int pos){
    	return posDefensores.get(pos);
    }
    
    public void setPosDefensores(int pos, IdPosicion idPosicion){
    	lock.cerrar();
    	posDefensores.set(pos, idPosicion);
    	lock.abrir();
    }
    
    public int getSizePosDefensores(){
    	return posDefensores.size();
    }
}
